package com.ljx.other;

/**
 * @author: zhangrunkai
 * @date: 2023/3/13
 */
public class NewInstanceTest {

    public static void main(String[] args) {
        A a = new A();
        A b = new A();
        // 打印com.ljx.other.A@685f4c2e。 每一次启动都是不一样的，
        // 格式为com.ljx.other.A@{hashCode} hashcode是在创建对象时（new），由JVM生成的一个数字，用于标识某个实例的
        System.out.println(a);
        // com.ljx.other.A@7daf6ecc
        System.out.println(b);
        // 简单的==号，是直接比较 "com.ljx.other.A@685f4c2e" == "com.ljx.other.A@7daf6ecc"
        System.out.println(a == b); // false;

        // 创建一个引用C，指向A所指向的地址。本质上a跟c都是指向同一个对象，所以是相等的
        A c = a;
        System.out.println(a == c);

        // 记住 new A(),是创建一个对象，A d 可以理解为创建一个引用，类型是A，。
        // A d 可以理解为创建一个引用，类型是A，目前没有进行任何初始化操作
        A d;
        // 将d初始化为null， 还是没有创建任何对象
        d = null;
        // 这时候，new了一个A, 才真正意义上进行了初始化
        d = new A();

    }
}
class A{

}
